Structured Swinging Types
نویسنده
چکیده
Swinging types (STs) provide an axiomatic specification formalism for designing and verifying software in terms of many-sorted logic and canonical models. STs are one-tiered insofar as static and dynamic, structural and behavioral aspects of a system are treated on the same syntactic and semantic level. Canonical models interpret relations as least or greatest fixpoints. All reasoning about a particular ST can be reduced to deductive processes, from built-in simplifications via resolution upon relations, narrowing upon functions, up to interactive proofs employing induction and coinduction rules. In this paper, the different possibilities of building up an ST are clearly separated from each other. The designer of an ST may choose among six specification patterns when extending a given ST by new components. Semantically, this leads to stratified models, similar to those known from the semantics of stratified logic programs. Predicates (relations interpreted as least fixpoints) and functions are axiomatized by Horn clauses, copredicates (relations interpreted as greatest fixpoints) are axiomatized by co-Horn clauses. These notions are generalized in this paper such that quantifiers may now occur at any place and even negation is permitted in axioms. For ensuring monotonicity and thus the existence of fixpoints, each relation preceded by a negation symbol must be axiomatized on a lower specification level. Under this assumption, any ST can be transformed into an equivalent one without negation symbols. When an ST is developed stepwise, particular attention must be paid to the addition of defined functions and behavioral equalities in order to guarantee that they are fully compatible with other signature elements. Here functionality and behavioral consistency are the crucial requirements to an ST. Moreover strong constructors are introduced as a further means for specifying behavioral equalities, which are usually axiomatized only in terms of observers. Provided that the ST is behaviorally consistent, behavioral equations whose sides are dominated by strong constructors may be decomposed, such as structural equations may be splitted if their sides are dominated by (arbitrary) constructors. Moreover, a simple and intuitive notion of refinement for STs is presented along with a powerful and completely deductive criterion for refinement correctness. *** sections 8, 9
منابع مشابه
Modular Swinging Types
Swinging types 18] provide an integrated framework for specifying software on the basis of many-sorted logic in terms of \static" functions and relations as well as \dynamic" transition systems. Swinging types combine equational, Horn and modal logic for the purpose of using evaluation and proof rules from all three logics for rapid prototyp-ing and veriication. A swinging speciication separate...
متن کاملSwinging Types At Work
We present a number of swinging specifications with visible and/or hidden components, such as lists, sets, bags, maps, monads, streams, trees, graphs, processes, nets, classes, languages, parsers,... They provide more or less worked-out case studies and shall allow the reader to figure out the integrative power of the swinging type approach with respect to various specification and proof formal...
متن کاملSwinging Data Types { the Dielectic between Actions and Constructors {
final initial Abstract Initial structures are good for modelling constructor-based data types because they t the intuition about these types and admit resolution-and rewrite-oriented inductive theorem proving. The corresponding speciication and veriication methods do not comply so well with non-free or permutative types such as sets, bags and maps and are still less appropriate when innnite str...
متن کاملSwinging UML: How to Make Class Diagrams and State Machines Amenable to Constraint Solving and Proving
Swinging types (STs) provide a speciication and veriication formalism for designing software in terms of many-sorted logic. Current formalisms, be they set-or order-theoretic, algebraic or coalgebraic, rule-or net-based, handle either static system components (in terms of functions or relations) or dynamic ones (in terms of transition systems) and either structural or behavioral aspects, while ...
متن کاملExpander2: Program Verification Between Interaction and Automation
Expander2 is a flexible multi-purpose workbench for interactive rewriting, verification, constraint solving, flow graph analysis and other procedures that build up proofs or computation sequences. Moreover, tailormade interpreters display terms as two-dimensional structures ranging from trees and rooted graphs to a variety of pictorial representations that include tables, matrices, alignments, ...
متن کاملExpander2 as a Prover and Rewriter
Expander2 is a flexible multi-purpose workbench for interactive rewriting, verification, constraint solving, flow graph analysis and other procedures that build up proofs or computation sequences. Moreover, tailormade interpreters display terms as two-dimensional structures ranging from trees and rooted graphs to a variety of pictorial representations that include tables, matrices, alignments, ...
متن کاملذخیره در منابع من
با ذخیره ی این منبع در منابع من، دسترسی به آن را برای استفاده های بعدی آسان تر کنید
عنوان ژورنال:
دوره شماره
صفحات -
تاریخ انتشار 2006